home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / etc / firehol / examples / lan-gateway.conf < prev    next >
Text File  |  2005-10-18  |  5KB  |  188 lines

  1. #
  2. # $Id: lan-gateway.conf,v 1.1 2003/10/12 13:43:42 ktsaou Exp $
  3. #
  4. # Configuration file for a LAN router with one ethernet interface (eth0)
  5. # for the LAN and a PPP interface for connecting to the Internet.
  6. #
  7. # The LAN works with private IP addresses.
  8. #
  9. # This script will also setup a transparent cache for all the PCs on the
  10. # local LAN.
  11.  
  12. # ----------------------------------------------------------------------------
  13. # CUSTOM SERVICES
  14. # ----------------------------------------------------------------------------
  15. # See the section "Adding Services" in the documentation
  16.  
  17. # Example service x, listening on port TCP/z
  18. # > server_x_ports="tcp/z"
  19. # > client_x_ports="default"
  20.  
  21.  
  22. # ----------------------------------------------------------------------------
  23. # NETWORK DEFINITIONS - Normally, only these are to be touched by you.
  24. # ----------------------------------------------------------------------------
  25. # You can define anything you like, assuming you are using it later.
  26.  
  27. # --- HOME ---
  28.  
  29. # The definition of our HOME LAN.
  30. HOME_MYIP="10.0.0.1"        # The IP on our HOME LAN
  31. HOME_MYIF="eth0"        # The HOME LAN interface
  32. HOME_BCAST="10.0.255.255"    # The HOME LAN broadcast
  33. HOME_LAN="10.0.0.0/16"        # The HOME LAN
  34. HOME_SERVICES="all"
  35.  
  36. # Do we run a DHCP server on the HOME LAN?
  37. HOME_DHCP=1            # Set to 0 to disable
  38.  
  39.  
  40. # --- PUBLIC ---
  41.  
  42. # The definition of our PUBLIC interface.
  43. PUBLIC_MYIP=""            # Leave empty for dynamic IP
  44. PUBLIC_MYIF="ppp+"        # The public interface
  45. PUBLIC_SERVICES="smtp http"
  46.  
  47. # Is the PPP interface a DIAL-ON-DEMAND?
  48. DIAL_ON_DEMAND=1        # Set to 0 to disable
  49.  
  50.  
  51. # --- TRUSTED ---
  52.  
  53. # Hosts in the internet I trust for accessing private services
  54. # Empty these to disable.
  55. TRUSTED_IPS="my-office-pc.example.com"
  56. TRUSTED_SERVICES="ssh http"
  57.  
  58.  
  59. # --- TRANSPARENT CACHE ---
  60.  
  61. # Run a transparent cache?
  62. SQUID_PORT="3128"        # Leave empty to disable SQUID
  63. SQUID_USERS="squid"        # Users to be excluded from the cache
  64. SQUID_EXCLUDE=""        # Web Server IPs to be excluded from the cache
  65.  
  66.  
  67. # --- BLACKLIST ---
  68.  
  69. # A space-separated list of IPs to be blocked.
  70. blacklist=""
  71.  
  72.  
  73. # ----------------------------------------------------------------------------
  74. # HELPERS
  75. # ----------------------------------------------------------------------------
  76.  
  77. # Block all traffic from/to certain IPs
  78. if [ ! -z "${blacklist}" ]
  79. then
  80.     blacklist full "${blacklist}"
  81. fi
  82.  
  83. # Setup a transparent squid, only if SQUID_PORT is set.
  84. if [ ! -z "${SQUID_PORT}" ]
  85. then
  86.     transparent_squid "${SQUID_PORT}" "${SQUID_USERS}"    \
  87.       inface "${HOME_MYIF}" src "${HOME_LAN}"        \
  88.       `test ! -z "${SQUID_EXCLUDE}" && echo "dst not '${SQUID_EXCLUDE}'"`
  89. fi
  90.  
  91.  
  92. # ----------------------------------------------------------------------------
  93. # NETWORK ADDRESS TRANSLATION
  94. # ----------------------------------------------------------------------------
  95. # Change the source/destination of packets...
  96.  
  97. # Should we do SNAT or MASQUERADE?
  98. # If there is a PUBLIC_MYIP defined, we should do SNAT, otherwise MASQ.
  99. #
  100. if [ ! -z "${PUBLIC_MYIP}" ]
  101. then
  102.     snat to "${PUBLIC_MYIP}"                 \
  103.         outface "${PUBLIC_MYIF}"             \
  104.         src "${HOME_LAN}" dst not "${UNROUTABLE_IPS}"
  105. else
  106.     masquerade "${PUBLIC_MYIF}"
  107. fi
  108.  
  109.  
  110. # To have some public service hit an internal machine, do this:
  111. # (the example redirects external port TCP/26 to internal IP 10.0.0.2 port 25)
  112. #
  113. # > dnat to 10.0.0.2:25                        \
  114. # >    inface "${PUBLIC_MYIF}"                    \
  115. # >    src not "${HOME_LAN} ${UNROUTABLE_IPS}"            \
  116. # >    proto tcp dport 26
  117. #
  118. # For each such statement, the router at the end has to support it.
  119.  
  120.  
  121. # ----------------------------------------------------------------------------
  122. # PROTECT SELF
  123. # ----------------------------------------------------------------------------
  124. # Protect the firewall host...
  125.  
  126. # --- HOME ---
  127.  
  128. # Protect us from the HOME LAN
  129. interface "${HOME_MYIF}" home src "${HOME_LAN}" dst "${HOME_MYIP} ${HOME_BCAST}"
  130.     policy reject
  131.     
  132.     server "${HOME_SERVICES}" accept
  133.     
  134.     client all accept
  135.  
  136.     
  137. # DHCP needs 0.0.0.0/255.255.255.255 access.
  138. if [ ${HOME_DHCP} -eq 1 ]
  139. then
  140.     interface "${HOME_MYIF}" dhcp
  141.         server dhcp accept
  142. fi
  143.  
  144.  
  145. # --- PUBLIC ---
  146.  
  147. # Protect us from the PUBLIC
  148. interface "${PUBLIC_MYIF}" internet                \
  149.     src not "${UNROUTABLE_IPS}"                \
  150.     `test ! -z "${PUBLIC_MYIP}" && echo "dst '${PUBLIC_MYIP}'"`
  151.     
  152.     protection strong
  153.     policy drop
  154.     
  155.     # Are there any trusted PCs/services?
  156.     if [ ! -z "${TRUSTED_PCS}" -a ! -z "${TRUSTED_SERVICES}" ]
  157.     then
  158.         server "${TRUSTED_SERVICES}" accept src "${TRUSTED_PCS}"
  159.     fi
  160.     
  161.     server "${PUBLIC_SERVICES}" accept
  162.     
  163.     client all accept
  164.  
  165. # DIAL-ON-DEMAND needs this in case there is a PUBLIC_MYIP defined.
  166. if [ ${DIAL_ON_DEMAND} -eq 1 ]
  167. then
  168.     interface "${PUBLIC_MYIF}" dialup
  169.         client all accept
  170. fi
  171.  
  172.  
  173. # ----------------------------------------------------------------------------
  174. # PROTECT ROUTING
  175. # ----------------------------------------------------------------------------
  176. # Protect the LAN...
  177.  
  178. # Route traffic for the clients on the LAN
  179. router internet2lan inface "${PUBLIC_MYIF}" outface "${HOME_MYIF}"    \
  180.     src not "${UNROUTABLE_IPS}" dst "${HOME_LAN}"
  181.     
  182.     # route all client traffic
  183.     client all accept
  184.     
  185.     # For the dnat example above, this is needed:
  186.     # > server smtp accept dst 10.0.0.2
  187.     
  188.